package com.earl.eatbao.service;

import java.util.List;

import com.earl.eatbao.commons.service.BaseService;
import com.earl.eatbao.domain.eatbao.UserInfo;
import com.earl.eatbao.domain.sercurity.Role;
import com.earl.eatbao.domain.sercurity.User;
import org.springframework.web.multipart.MultipartFile;

public interface UserService extends BaseService<User, Long> {
	
	/**
	 * 修改用户密码.
	 * @param Id
	 * @param oldPassord
	 * @param newPassword
     * @return
     */
	Boolean changePassword(Long Id,String oldPassord, String newPassword);

	/**
	 * 查找用户拥有的角色
	 * @author 黄祥谦.
	 * @param userId
	 * @return 
	 */
	List<Role> findRole(Long userId);

	/**
	 * 登录系统
	 * @author 黄祥谦.
	 * @param username
	 * @param password
	 */
	void doLogin(String username, String password);

	/**
	 * 找到角色名字
	 * @author 黄祥谦.
	 * @param l
	 * @return
	 */
	List<String> findRoleName(Long l);

	/**
	 * 查找权限
	 * @author 黄祥谦.
	 * @param l
	 * @return
	 */
	List<String> findPrivilegeCode(long l);

	User findOneByLoginId(String loginid);

	/**
	 * 注册用户.
	 * @param phoneNumber 注册的手机号
	 * @param password 注册密码
	 * @param verifycode 
     */
	Boolean  registerAccount(String phoneNumber, String password, String verifycode);

	/**
	 * 冻结用户
	 * @param userId 用户id
	 * @return
	 */
	boolean takeBackUser(long userId);

	/**
	 * 查找用户信息
	 * @param userId
	 * @return
	 */
	UserInfo findUserInfo(Long userId);

	/**
	 * 更改密码
	 * @param account  手机号账号
	 * @param password 密码
	 * @param verifyCode 验证码
	 * @return
	 */
	boolean resetPassword(String account, String password, String verifyCode);

	/**
	 * 解冻用户
	 * @param userId
	 */
    void unfreezeUser(Long userId);

	/**
	 * 用户上传头像
	 * @param file
	 * @param userId
	 * @return
	 */
    Boolean upLoadUserImage(MultipartFile file, Long userId);
}